import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

export default  new Vuex.Store({
  //专门存放组件共享数据
  state: {
    count: 10,
     list: JSON.parse(sessionStorage.getItem("list")) || [],
     info:JSON.parse(sessionStorage.getItem("info")) || {},
     musicInFo:{}

  },
  //专门用来过滤组件共享数据
  mutations: {
    //保存歌曲信息

    savemusic(state ,v){
      state.musicInFo=v;

    },
   // 保存用户信息
    saveInfo(state,a){
      state.info=a;
      sessionStorage.setItem("info",JSON.stringify(state.info));
    },

    addp(state, a) {
      var flag = false;
      state.list.some((item, index, arr) => {
        if (item.id == a.id) {
          item.count++;
          sessionStorage.setItem("list", JSON.stringify(state.list))
          flag = true;
          return;
        }
      });
      if (!flag) {
        state.list.push(a);
      }
      sessionStorage.setItem("list", JSON.stringify(state.list))

    },
    add(state, a) {
      state.list.some((item)=>{
        if(item.id == a.id){
           if(a.count<200){
            item.count++;
           }else{
            item.count=200;
           }
           sessionStorage.setItem("list",JSON.stringify(state.list))
          return;
        }
     })


    },

    pre(state, a) {
        state.list.some((item,index)=>{
          if(item.id == a.id){
           if(item.count<=1){
              state.list.splice(index,1);
           }else{
            item.count--;
           }
           sessionStorage.setItem("list", JSON.stringify(state.list))
            return
          }
      })

    },
    change(state,a){
      state.list.some((item)=>{
        if(item.id == a.id){
           if(a.count>200){
              item.count=200;
           }else{
            item.count = a.count;
           }
           sessionStorage.setItem("list",JSON.stringify(state.list))
          return;
        }
     })
    }

  },
  // 专门用来过滤共享数据，相当于state中数据的计算属性，
  getters:{
        allCount(state){
          var count = 0;
            state.list.forEach((item,index,arr)=>{
              count+= item.count
            })

          return count;
        }
  }
})


